This invention relates to simulation of digital systems. The invention is particularly, although not exclusively, concerned with simulating complex logic networks, such as are found in electronic computers.
Conventional simulators use a queue to schedule changes to the state of the simulated system. Whenever it is determined that the state is to change, a record containing the new state value is added to the appropriate position of the queue. In operation, the queue is scanned sequentially, to simulate the passage of time and, as each record is scanned, the new state values specified by that record are set.
The VHDL simulation language [ANSI/IEEE Standard 1076] uses signals to propagate changes of state around the simulation model. Signals are classified as unresolved and resolved. Unresolved signals are those that have only one driving source, while resolved signals have more than one driving source. A resolution process is used to handle resolved signals, so as to resolve the values from the different sources.
Unresolved signals may be either event-based or delta-based. Event-based signals have explicit time delays associated with them. Delta-based signals, on the other hand, represent changes that are assumed to take place instantaneously; i.e. they do not have any explicit time delays associated with them. Delta-based signals are used to ensure order independence for concurrent processes, and to ensure that changes to the signal value take place only when all the concurrent processes have completed their execution for the current time unit. In the case of an event-based signal, a record is added to the queue at the appropriate time position, taking account of the time delay for that signal. In the case of a delta-based signal, a record is added at the position in the queue corresponding to the current simulation time.
Conventional VHDL simulators use a centralised kernel to control the operation of the simulation model. Such a kernel requires a fixed data format, to which all data types used in the simulation must conform, to represent changes of state of the model, and requires a range of generalised routines for handling all these changes.
A problem is that when the simulated network is large and complex, the simulation can be very slow and hence take a very long time to run. Also, the complexity of the kernel is a problem, if it is required to maintain a high level of performance while enabling the kernel to deal with each data type in whatever form. Every adjustment to the kernel becomes performance-critical, and some data types cannot be added for fear of losing simulation performance.
The object of the present invention is to provide a way of improving the performance of a simulation system, so as to increase the speed of simulation.